﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using SOAPServices.Persistencia;
using SOAPServices.Dominio;

namespace SOAPServices
{
    public class Productos : IProductos
    {
        private ProductoDAO productoDAO = null;
        private ProductoDAO ProductoDAO
        {
            get
            {
                if (productoDAO == null)
                    productoDAO = new ProductoDAO();
                return productoDAO;
            }
        }

       // public Producto CrearProducto(string txtProducto)
       // {
       //     try
       //     {
       //         Producto v = new Producto()
       //         {
       //             txtProducto = txtProducto
       //         };
       //         return ProductoDAO.Crear(v);
       //     }

       //     catch (FaultException ex)
       //     {
       //         throw ex;
       //     }
       // }

        public Producto CrearProducto(string txtProducto)
        {
            Producto v = new Producto()
            {
                txtProducto = txtProducto
            };
            try
            {
                List<Producto> a = ListarProducto();
                foreach (Producto i in a)
                {
                    if (i.txtProducto == txtProducto)
                        throw new FaultException("Descripcion del Producto Ya existe, por favor ingresar nuevamente.");
                }
            }

            catch (FaultException ex)
            {
                throw ex;
            }
            return ProductoDAO.Crear(v);
        }



        public Producto ObtenerProducto(int IdProducto)
        {
            return ProductoDAO.Obtener(IdProducto);
        }

        public Producto ModificarProducto(int IdProducto, string txtProducto)
        {
            try
            {
                Producto v = new Producto()
                {
                    IdProducto = IdProducto,
                    txtProducto = txtProducto
                };
                return ProductoDAO.Modificar(v);
            }
            catch (FaultException ex)
            {
                throw ex;
            }

        }

        public void EliminarProducto(int IdProducto)
        {
            Producto v = ProductoDAO.Obtener(IdProducto);
            ProductoDAO.Eliminar(v);
        }

        public List<Producto> ListarProducto()
        {
            return ProductoDAO.ListarTodos().ToList();
        }
    }
}
